/**
 * 動的にswfファイルを読み込んで、コンポーネントを形作るリソースを得る検証プログラム.
 * to compile : haxe -swf-version 9 -swf dynamicLoad.swf -main DynamicLoad DynamicLoad.hx
 *
 * 読み込むIResource.swfファイルは、Flexビルダーにて
 *   -use-network=false -includes jp.ize.ux.ButtonResource
 * といったコンパイルオプションを付けてコンパイル・作成するとよい。
 *
 * 2009/01 IT Planning.
 *
 */
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;
import flash.system.SecurityDomain;
import flash.events.Event;
import flash.filters.BitmapFilter;
import flash.net.URLRequest;

class DynamicLoad
{
	public static function main() : Void
	{
		var l:Loader = new Loader();
		var url:String = "IResource.swf";
		var req:URLRequest = new URLRequest(url);
		var ctx:LoaderContext = new LoaderContext( false, ApplicationDomain.currentDomain, SecurityDomain.currentDomain );
		l.load( req );
		l.contentLoaderInfo.addEventListener( Event.COMPLETE, loadCompleteHandler );
	}

	public static function loadCompleteHandler( e:Event ) : Void
	{
		var names:Array<String> = ["Button", "ListBox", "RadioButton"];
		for( name in names ) {
			switch( name ) {
				case "Button" :
					setButtonResource( e );
					break;
			}
		}
	}
	
	public static function setButtonResource( e : Event ) {
		var name = "jp.ize.ux.ButtonResource";
		if ( e.target.applicationDomain.hasDefinition( name ) ) {
			var def = e.target.applicationDomain.getDefinition( name );
			var c : Sprite = Type.createInstance(def, []);
			//Reflect.setField(c, "y", 100);
			flash.Lib.current.addChild(c);
		} else {
			trace("no button definition");
		}
	}

}
